home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1991-02-11 | 4.2 KB | 135 lines |
- ' Simple Sprite Plotter
- '
- ' By Peter Hickman
- '
- SPNUM=1 : BITPLANES=4 : XSIZE=0 : YSIZE=0 : BITPLANES=4
- XHOT=0 : YHOT=0 : NUMBER_OF_SPRITES=0 : BCOL=15
- Global SPNUM,BITPLANES,XSIZE,YSIZE,BITPLANES
- Global XHOT,YHOT,NUMBER_OF_SPRITES,BCOL
- X Mouse=260 : Y Mouse=130
- SET_UP_SCREEN
- FILE_LOAD
- Repeat
- TEMP$=Upper$(Inkey$)
- TEMP=Mouse Key
- Screen 1
- Inverse On
- Print At(18,5);"Xmouse:";X Screen(0,X Mouse);" ";At(50,5);"Yscreen:";Y Screen(0,Y Mouse);" ";
- Inverse Off
- Screen 0
- If TEMP$="+" and SPNUM<NUMBER_OF_SPRITES
- Inc SPNUM
- FIND_SPRITE_SIZE
- Amreg(0)=SPNUM : Wait 2
- End If
- If TEMP$="-" and SPNUM>1
- Dec SPNUM
- FIND_SPRITE_SIZE
- Amreg(0)=SPNUM : Wait 2
- End If
- If TEMP$="Z"
- Add BCOL,-1,0 To(2^BITPLANES)-1
- FIND_SPRITE_SIZE
- End If
- If TEMP$="A"
- Add BCOL,1,0 To(2^BITPLANES)-1
- FIND_SPRITE_SIZE
- End If
- If TEMP$="L" Then FILE_LOAD
- If TEMP$="S" Then PIC_SAVE
- If TEMP$="U" Then UNDO
- If TEMP=1 Then PLACE_BOB
- If TEMP$="C" Then CLEAR_SCREEN
- Until TEMP$="Q"
- Procedure SET_UP_SCREEN
- Screen Open 0,320,200,2^BITPLANES,Lowres
- Curs Off : Flash Off : Cls 0 : Double Buffer : Autoback 2
- Screen Display 0,,42,,
- Screen Open 1,640,55,2,Hires
- Curs Off : Flash Off : Cls 0 : Palette $0,$FFF : Pen 1 : Paper 0
- Screen Display 1,,244,, : Inverse On : Print At(,5);Space$(79); : Inverse Off
- Screen Open 2,320,200,2^BITPLANES,Lowres
- Curs Off : Flash Off : Cls 0 : Screen Hide 2
- Screen To Front 0
- Screen 0
- End Proc
- Procedure FIND_SPRITE_SIZE
- NUMBER_OF_SPRITES=Length(1)
- TEMP=Sprite Base(SPNUM)
- XSIZE=Deek(TEMP)*16
- YSIZE=Deek(TEMP+2)
- BITPLANES=Deek(TEMP+4)
- XHOT=Deek(TEMP+6)
- YHOT=Deek(TEMP+8)
- TX=X Mouse : TY=Y Mouse
- Limit Mouse X Hard(1)+XHOT,Y Hard(1)+YHOT To X Hard(0,318-(XSIZE-XHOT)),Y Hard(0,198-(YSIZE-YHOT))
- X Mouse=TX : Y Mouse=TY
- Screen 1
- Print At(0,0);"Sprite number:";SPNUM;" ";
- Print At(65,0);"Bitplanes:";BITPLANES;" ";
- Print At(0,2);"Xsize:";XSIZE;" ";At(65,2);"Ysize:";YSIZE;" ";
- Print At(0,4);"Xhotspot:";XHOT;" ";At(65,4);"Yhotspot:";YHOT;" ";
- Print At(30,0);"BORDER COLOUR:";BCOL;" ";
- Screen 0
- End Proc
- Procedure FILE_LOAD
- Amal Off
- Show On : Limit Mouse
- NAME$=Fsel$("*.Abk","","PICK A SPRITE BANK TO LOAD")
- If NAME$<>""
- Erase 1 : Screen 0
- Load NAME$ : Get Sprite Palette
- SPNUM=1 : Amreg(0)=1
- FIND_SPRITE_SIZE
- Channel 1 To Bob 1
- End If
- Hide On
- Bob 1,X Screen(0,X Mouse),Y Screen(0,Y Mouse),SPNUM
- Amal 1,"B: Let A=RA ; Let X=XScreen(0,XMouse) ; Let Y=YScreen(0,YMouse) Jump B"
- Amal On 1
- End Proc
- Procedure PIC_SAVE
- Bob Off 1
- Amal Off : Update : Update
- Show On : Limit Mouse
- NAME$=Fsel$("*.Iff","","PICK A PICTURE NAME TO SAVE")
- If NAME$<>""
- Save Iff NAME$
- End If
- Hide On
- FIND_SPRITE_SIZE
- Bob 1,X Screen(0,X Mouse),Y Screen(0,Y Mouse),SPNUM
- Amal 1,"B: Let A=RA ; Let X=XScreen(0,XMouse) ; Let Y=YScreen(0,YMouse) Jump B"
- Amal On 1 : Wait Vbl : Update
- End Proc
- Procedure PLACE_BOB
- Repeat : TEMP=Mouse Key : Until TEMP<>1
- TEMPX=X Mouse : TEMPY=Y Mouse
- If TEMP=3
- Bob Off 1 : Wait 2
- Wait Vbl : Screen Copy Physic(0) To 2 : Wait 2
- Paste Bob X Screen(0,TEMPX-XHOT),Y Screen(0,TEMPY-YHOT),SPNUM
- TX=TEMPX-XHOT : TY=TEMPY-YHOT
- Ink BCOL : Box X Screen(0,TX-1),Y Screen(0,TY-1) To X Screen(0,TX+XSIZE+1),Y Screen(0,TY+YSIZE+1)
- Bob 1,X Screen(0,X Mouse),Y Screen(0,Y Mouse),SPNUM
- Amal 1,"B: Let A=RA ; Let X=XScreen(0,XMouse) ; Let Y=YScreen(0,YMouse) Jump B"
- Amal On 1
- End If
- End Proc
- Procedure CLEAR_SCREEN
- Bob Off 1 : Wait 2
- Wait Vbl : Screen Copy Physic(0) To 2 : Wait 2
- TX=TEMPX-XHOT : TY=TEMPY-YHOT
- Cls 0
- Bob 1,X Screen(0,X Mouse),Y Screen(0,Y Mouse),SPNUM
- Amal 1,"B: Let A=RA ; Let X=XScreen(0,XMouse) ; Let Y=YScreen(0,YMouse) Jump B"
- Amal On 1
- End Proc
- Procedure UNDO
- Bob Off 1 : Wait 4
- Screen Copy 2 To Physic(0) : Wait 4
- Screen Copy 2 To Logic(0) : Wait 4
- Bob 1,X Screen(0,X Mouse),Y Screen(0,Y Mouse),SPNUM
- Amal 1,"B: Let A=RA ; Let X=XScreen(0,XMouse) ; Let Y=YScreen(0,YMouse) Jump B"
- Amal On 1
- End Proc